package com.ionehe.group.common.uaa.ex.application.converter;

import com.ionehe.group.common.uaa.ex.application.model.RoleInfoVO;
import com.ionehe.group.common.uaa.ex.application.model.UserInfoAddVO;
import com.ionehe.group.common.uaa.ex.application.model.UserInfoQueryVO;
import com.ionehe.group.common.uaa.ex.application.model.UserInfoUpdateVO;
import com.ionehe.group.common.uaa.ex.application.model.UserInfoVO;
import com.ionehe.group.common.uaa.ex.dto.RoleInfoDTO;
import com.ionehe.group.common.uaa.ex.dto.UserInfoAddDTO;
import com.ionehe.group.common.uaa.ex.dto.UserInfoDTO;
import com.ionehe.group.common.uaa.ex.dto.UserInfoQueryDTO;
import com.ionehe.group.common.uaa.ex.dto.UserInfoUpdateDTO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
import java.util.List;

/**
 * @USER:秀
 * @DATE: 2020/11/30
 * @PROJECT_NAME: general-permissions
 * @Description 用户转换类
 **/
@Mapper(componentModel = "spring", imports = {LocalDateTime.class, Date.class, ZoneId.class})//交给spring管理
public interface UserInfoConverter {

    RoleInfoVO dto2vo(RoleInfoDTO roleInfoDTO);

    List<RoleInfoVO> dtoList2vo(List<RoleInfoDTO> roleInfoDTOList);

    @Mapping(source = "roleInfoDTOList", target = "roleInfoVOList")
    UserInfoVO dto2vo(UserInfoDTO userInfoDTO);

    List<UserInfoVO> dtoList2voList(List<UserInfoDTO> userInfoDTOList);

    UserInfoAddDTO vo2dto(UserInfoAddVO userInfoAddVO);

    UserInfoUpdateDTO vo2dto(UserInfoUpdateVO userInfoUpdateVO);

    UserInfoQueryDTO vo2dto(UserInfoQueryVO queryVO);
}
